#include "setwig.h"
#include "ui_setwig.h"

SetWig::SetWig(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::SetWig)
{
    ui->setupUi(this);
    connect(ui->comboBox,SIGNAL(currentIndexChanged(QString)),this,SLOT(currentIndexChangedSlot(QString)));//模式选择
    //动图
       // 建电影类对象
       movie = new QMovie(":/new/prefix1/282.gif");
       // 给QLabel设置电影
       ui->labelFan->setMovie(movie);
       // 播放电影
       movie->start();
}

SetWig::~SetWig()
{
    delete movie;
    delete ui;
}

void SetWig::currentIndexChangedSlot(const QString strn)//选择上报进程
{
   str=strn;
}

void SetWig::on_pushButton_clicked()
{
    if(str=="刷新上报")
    {
        // 创建JSON对象
           QJsonObject jsonObject;
           // 添加控制指令类型
           jsonObject["type"] = QJsonValue(3);
           // 创建数据子对象
           QJsonObject dataObject;
           // 添加数据点唯一标识和数据点键值
           dataObject["type"] = QJsonValue(0);
           dataObject["period"] = QJsonValue(ui->spinBox->value());
           // 将数据子对象添加到主对象
           jsonObject["data"] = dataObject;

           // 创建QJsonDocument并添加JSON对象
           QJsonDocument jsonDoc(jsonObject);

           // 将JSON文档序列化为字符串
           QString jsonString = jsonDoc.toJson(QJsonDocument::Compact);

           // 创建一个QMQTT::Message对象
           QMQTT::Message message;
           message.setTopic("/app/data/down"); // 设置发布的主题
           message.setPayload(jsonString.toUtf8()); // 设置消息内容，注意转换
           message.setQos(1); // 设置服务质量等级

           // 使用MqttHandler实例发布消息
           quint16 messageId = GlobalVal::mqtt->publish(message);
           qDebug() << "Message published with ID" << messageId;
    }
    else if(str=="周期上报")
    {
        // 创建JSON对象
           QJsonObject jsonObject;
           // 添加控制指令类型
           jsonObject["type"] = QJsonValue(3);
           // 创建数据子对象
           QJsonObject dataObject;
           // 添加数据点唯一标识和数据点键值
           dataObject["type"] = QJsonValue(1);
           dataObject["period"] = QJsonValue(ui->spinBox->value());
           // 将数据子对象添加到主对象
           jsonObject["data"] = dataObject;

           // 创建QJsonDocument并添加JSON对象
           QJsonDocument jsonDoc(jsonObject);

           // 将JSON文档序列化为字符串
           QString jsonString = jsonDoc.toJson(QJsonDocument::Compact);

           // 创建一个QMQTT::Message对象
           QMQTT::Message message;
           message.setTopic("/app/data/down"); // 设置发布的主题
           message.setPayload(jsonString.toUtf8()); // 设置消息内容，注意转换
           message.setQos(1); // 设置服务质量等级

           // 使用MqttHandler实例发布消息
           quint16 messageId = GlobalVal::mqtt->publish(message);
           qDebug() << "Message published with ID" << messageId;
    }
    else if(str=="变化上报")
    {
        // 创建JSON对象
           QJsonObject jsonObject;
           // 添加控制指令类型
           jsonObject["type"] = QJsonValue(3);
           // 创建数据子对象
           QJsonObject dataObject;
           // 添加数据点唯一标识和数据点键值
           dataObject["type"] = QJsonValue(2);
           dataObject["period"] = QJsonValue(ui->spinBox->value());
           // 将数据子对象添加到主对象
           jsonObject["data"] = dataObject;

           // 创建QJsonDocument并添加JSON对象
           QJsonDocument jsonDoc(jsonObject);

           // 将JSON文档序列化为字符串
           QString jsonString = jsonDoc.toJson(QJsonDocument::Compact);

           // 创建一个QMQTT::Message对象
           QMQTT::Message message;
           message.setTopic("/app/data/down"); // 设置发布的主题
           message.setPayload(jsonString.toUtf8()); // 设置消息内容，注意转换
           message.setQos(1); // 设置服务质量等级

           // 使用MqttHandler实例发布消息
           quint16 messageId = GlobalVal::mqtt->publish(message);
           qDebug() << "Message published with ID" << messageId;
    }
}
